package org.finesys.codegen.service;

import java.util.List;

import org.finesys.codegen.dto.ColumnDTO;
import org.finesys.codegen.dto.GenTableGroupDTO;
import org.finesys.codegen.dto.TableDTO;
import org.finesys.codegen.entity.GenTable;
import org.finesys.common.mp.core.service.BaseService;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

public interface GenTableService extends BaseService<GenTable> {
    /**
     * 保存表单
     */
    boolean saveTable(GenTableGroupDTO genTableGroupDTO);

    /**
     * 更新表单
     */
    boolean updateTable(GenTableGroupDTO genTableGroupDTO);

    /**
     * 删除表
     */
    boolean removeTableByIds(Long[] ids);

    /**
     * 查询对应数据源的表
     */
    Page<TableDTO> queryDsTablePage(Page<TableDTO> page, TableDTO tableDTO);

    /**
     * 查询数据源里面的全部表
     */
    List<TableDTO> queryDsTableList(TableDTO tableDTO);
    /**
     * 查询数据源里面的表的全部字段
     */
    Page<ColumnDTO> queryDsTableColumnPage(Page<ColumnDTO> page, ColumnDTO columnDTO);
    /**
     * 查询数据源里面的表的全部字段
     */
    List<ColumnDTO> queryDsTableColumnList(String dsName, String tableName);

    /**
     * 查询表ddl 语句
     *
     * @param dsName    数据源名称
     * @param tableName 表名称
     * @return ddl 语句
     * @throws Exception
     */
    String queryTableDdl(String dsName, String tableName) throws Exception;


    /**
     * 查询表信息（列），然后插入到中间表中
     *
     * @param dsId      数据源
     * @param tableName 表名
     * @return GenTable
     */
    GenTable queryOrBuildTable(String dsName, String tableName);
}
